﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DTO_MechSys;
using BLL_MechSys;

namespace FORMS_MechSys
{
    public partial class frmFerramentaCadastro : Form
    {
        System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmFerramentaCadastro));

        DataTable dataTableGridView = new DataTable();
        List<DTOFerramenta> ListFerramenta = new List<DTOFerramenta>();

        DTOFerramenta dtoFerramentaADD = new DTOFerramenta();
        BLLFerramenta bllFerramenta = new BLLFerramenta();
        BLLFornecedor bllFornecedor = new BLLFornecedor();

        
        

        DTOCor dtoCorPrincipal = new DTOCor();
        DTOCor dtoCorFundo = new DTOCor();
        DTOCor dtoCorLetra = new DTOCor();
        DTOCor dtoCorDataGrid = new DTOCor();
        BLLCor bllCor = new BLLCor();

        public frmFerramentaCadastro()
        {
            InitializeComponent();
            PopulaGrid();
            Habilitar(false);
            SetColors();
        }

        private void SetColors()
        {
            dtoCorPrincipal = bllCor.Buscar("Principal");

            btnCancelar.BackColor = btnNovo.BackColor = btnSalvar.BackColor = tlpMenuStripCenter.BackColor = tableLayoutPanel4.BackColor =
                tlpMenuStripRigth.BackColor = tlp_dados.BackColor = tlpPrincipal.BackColor = btnBuscarFornecedor.BackColor = tlpMenuStripLeft.BackColor =
                btnCadastrarFornecedor.BackColor = btn_pesquisar.BackColor = toolStripButtonSair.BackColor =
                btnEditar.BackColor = btnExcluir.BackColor = tableLayoutPanel6.BackColor = dtoCorPrincipal.Cor;

            dtoCorFundo = bllCor.Buscar("Fundo");
            tlpMenuStrip.BackColor= 
            tlpPrincipal.BackColor = dtoCorFundo.Cor;

            dtoCorDataGrid = bllCor.Buscar("DataGrid");
            dtGridProdutos.BackgroundColor = dtoCorDataGrid.Cor;

            dtoCorLetra = bllCor.Buscar("Letra");
            label2.ForeColor = label3.ForeColor = label1.ForeColor = label7.ForeColor = btnBuscarFornecedor.ForeColor =
                label12.ForeColor = label14.ForeColor = rbtnEmLinha.ForeColor = rbtnForaLinha.ForeColor = btnCadastrarFornecedor.ForeColor =
                label5.ForeColor = label6.ForeColor = btnCancelar.ForeColor = toolStripButtonSair.ForeColor =
                btnNovo.ForeColor = btnEditar.ForeColor = btnSalvar.ForeColor = btnCancelar.ForeColor = btnExcluir.ForeColor =
                dtoCorLetra.Cor;


        }

        //EFEITOS
        #region
        private void btnNovo_EnabledChanged(object sender, EventArgs e)
        {
            if (btnNovo.Enabled)
            {
                btnNovo.BackColor = dtoCorPrincipal.Cor;
                btnNovo.ForeColor = Color.White;
                btnNovo.BackColor = dtoCorPrincipal.Cor;
            }
            else
                btnNovo.BackColor = dtoCorFundo.Cor;

        }

        private void btnEditar_EnabledChanged(object sender, EventArgs e)
        {
            if (btnEditar.Enabled)
            {
                btnEditar.BackColor = dtoCorPrincipal.Cor;
                btnEditar.BackColor = dtoCorPrincipal.Cor;
                btnEditar.ForeColor = Color.White;

            }
            else
                btnEditar.BackColor = dtoCorFundo.Cor;
        }

        private void btnCancelar_EnabledChanged(object sender, EventArgs e)
        {
            if (btnCancelar.Enabled)
            {
                btnCancelar.BackColor = dtoCorPrincipal.Cor;

                btnCancelar.BackColor = dtoCorPrincipal.Cor;
                btnCancelar.ForeColor = Color.White;

            }
            else
                btnCancelar.BackColor = dtoCorFundo.Cor;
        }

        private void btnExcluir_EnabledChanged(object sender, EventArgs e)
        {

        }

        private void btnSalvar_EnabledChanged(object sender, EventArgs e)
        {
            if (btnSalvar.Enabled)
            {
                btnSalvar.BackColor = dtoCorPrincipal.Cor;
                btnSalvar.ForeColor = Color.White;
            }
            else
                btnSalvar.BackColor = dtoCorFundo.Cor;
        }

        private void btnEditar_MouseLeave(object sender, EventArgs e)
        {
            if (btnEditar.Enabled)
            {
                btnEditar.BackColor = dtoCorPrincipal.Cor;
                btnEditar.ForeColor = Color.White;
            }
        }

        private void btnEditarkkkkkkk(object sender, EventArgs e)
        {
            btnEditar.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(194)))), ((int)(((byte)(224)))), ((int)(((byte)(255)))));
            btnEditar.ForeColor = Color.Black;
            this.btnEditar.BackgroundImage = ((System.Drawing.Image)(null));
        }

        private void btnCancelar_MouseLeave(object sender, EventArgs e)
        {
            if (btnCancelar.Enabled)
            {
                btnCancelar.BackColor = dtoCorPrincipal.Cor;
                btnCancelar.ForeColor = Color.White;
            }
        }

        private void btnCancelarkkkkkkk(object sender, EventArgs e)
        {
            btnCancelar.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(194)))), ((int)(((byte)(224)))), ((int)(((byte)(255)))));
            btnCancelar.ForeColor = Color.Black;
        }

        private void btnExcluir_MouseLeave(object sender, EventArgs e)
        {
            if (btnExcluir.Enabled)
            {
                btnExcluir.BackColor = dtoCorPrincipal.Cor;
                btnExcluir.ForeColor = Color.White;
            }
        }

        private void btnExcluirkkkkkkk(object sender, EventArgs e)
        {
            btnExcluir.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(194)))), ((int)(((byte)(224)))), ((int)(((byte)(255)))));
            btnExcluir.ForeColor = Color.Black;

        }

        private void btnSalvar_MouseLeave(object sender, EventArgs e)
        {
            if (btnSalvar.Enabled)
            {
                btnSalvar.BackColor = dtoCorPrincipal.Cor;
                btnSalvar.ForeColor = Color.White;
            }
        }

        private void btnSalvarkkkkkkk(object sender, EventArgs e)
        {
            btnSalvar.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(194)))), ((int)(((byte)(224)))), ((int)(((byte)(255)))));
            btnSalvar.ForeColor = Color.Black;
        }

        private void btnNovo_MouseLeave(object sender, EventArgs e)
        {
            if (btnNovo.Enabled)
            {
                btnNovo.BackColor = dtoCorPrincipal.Cor;
                btnNovo.ForeColor = Color.White;
            }
        }

        private void btnNovokkkkkkk(object sender, EventArgs e)
        {
            btnNovo.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(194)))), ((int)(((byte)(224)))), ((int)(((byte)(255)))));
            btnNovo.ForeColor = Color.Black;
        }

        #endregion

        public void Limpar()
        {
            txtCodigo.Clear();
            rbtnEmLinha.Checked = true;
            rbtnForaLinha.Checked = false;
            txtMarca.Clear();
            dtpDataAquisicao.Value = DateTime.Now;
            txtValor.Clear();
            txtDescricao.Clear();
            txtFornecedor.Clear();
            txtPesquisar.Clear();
        }

        public void Habilitar(bool status)
        {
            tlp_dados.Enabled = status;
            btnNovo.Enabled = !status;
            btnEditar.Enabled = !status;
            btnExcluir.Enabled = !status;
            btnCancelar.Enabled = status;
            btnSalvar.Enabled = status;

            if (dtGridProdutos.Rows.Count <= 0)
            {
                btnEditar.Enabled = false;
                btnExcluir.Enabled = false;
            }
        }

        private void btnNovo_Click(object sender, EventArgs e)
        {
            Habilitar(true);
            Limpar();
            dtoFerramentaADD.FerramentaID = 0;

            txtDescricao.Focus();
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            Habilitar(false);
            Limpar();
        }

        public void PopulaGrid()
        {
            DataRow dataRow;
            dataTableGridView = new DataTable();

            ListFerramenta = bllFerramenta.BuscarFerramentaCadastrados();
            if (ListFerramenta.Count > 0)
            {
                dataTableGridView.Columns.Add("FerramentaID", typeof(int));
                dataTableGridView.Columns.Add("Descrição", typeof(string));
                dataTableGridView.Columns.Add("Fornecedor ID", typeof(int));
                dataTableGridView.Columns.Add("Marca", typeof(string));
                dataTableGridView.Columns.Add("ValorCompra", typeof(string));
                dataTableGridView.Columns.Add("DataAquisicao", typeof(string));
                dataTableGridView.Columns.Add("Descontinuando", typeof(bool));


                foreach (DTOFerramenta dtoFerramenta in ListFerramenta)
                {
                    dataRow = dataTableGridView.NewRow();

                    dataRow["FerramentaID"] = dtoFerramenta.FerramentaID;
                    dataRow["Descrição"] = dtoFerramenta.Descricao;
                    dataRow["Fornecedor ID"] = (dtoFerramenta.FornecedorID);

                    dataRow["Marca"] = dtoFerramenta.Marca;
                    dataRow["ValorCompra"] =  dtoFerramenta.ValorCompra;
                    dataRow["DataAquisicao"] =  dtoFerramenta.DataAquisicao;
                    dataRow["Descontinuando"] = dtoFerramenta.Descontinuando;


                    // Adiciona linha ao DataTable.
                    dataTableGridView.Rows.Add(dataRow);
                }
            }
            dtGridProdutos.DataSource = null;
            dtGridProdutos.DataSource = dataTableGridView;

        }

        public void PopulaGrid(string descricao, int codigo)
        {
            DataRow dataRow;
            dataTableGridView = new DataTable();

            ListFerramenta = bllFerramenta.PesquisarFerramenta(descricao, codigo);
            if (ListFerramenta.Count > 0)
            {
                dataTableGridView.Columns.Add("FerramentaID", typeof(int));
                dataTableGridView.Columns.Add("Descrição", typeof(string));
                dataTableGridView.Columns.Add("Fornecedor ID", typeof(int));
                dataTableGridView.Columns.Add("Marca", typeof(string));
                dataTableGridView.Columns.Add("ValorCompra", typeof(string));
                dataTableGridView.Columns.Add("DataAquisicao", typeof(string));
                dataTableGridView.Columns.Add("Descontinuando", typeof(bool));

                foreach (DTOFerramenta dtoFerramenta in ListFerramenta)
                {
                    dataRow = dataTableGridView.NewRow();

                    dataRow["FerramentaID"] = dtoFerramenta.FerramentaID;
                    dataRow["Descrição"] = dtoFerramenta.Descricao;
                    dataRow["Fornecedor ID"] = (dtoFerramenta.FornecedorID);

                    dataRow["Marca"] = dtoFerramenta.Marca;
                    dataRow["ValorCompra"] = dtoFerramenta.ValorCompra;
                    dataRow["DataAquisicao"] = dtoFerramenta.DataAquisicao;
                    dataRow["Descontinuando"] = dtoFerramenta.Descontinuando;


                    // Adiciona linha ao DataTable.
                    dataTableGridView.Rows.Add(dataRow);
                }


                dtGridProdutos.DataSource = null;
                dtGridProdutos.DataSource = dataTableGridView;
            }
        }

        private void btnSalvar_Click(object sender, EventArgs e)
        {
            dtoFerramentaADD.Descricao = txtDescricao.Text;
            if (!string.IsNullOrWhiteSpace(txtCodigo.Text))
                dtoFerramentaADD.FerramentaID = Int32.Parse(txtCodigo.Text);
            if (!string.IsNullOrWhiteSpace(txtValor.Text))
                dtoFerramentaADD.ValorCompra = (float.Parse(txtValor.Text));
            if (!string.IsNullOrWhiteSpace(txtMarca.Text))
            {
                dtoFerramentaADD.Marca = txtMarca.Text;
            }
            dtoFerramentaADD.DataAquisicao = dtpDataAquisicao.Value;

            dtoFerramentaADD.Descontinuando = rbtnEmLinha.Checked;




            if (dtoFerramentaADD.FerramentaID == 0)
                bllFerramenta.Inserir(dtoFerramentaADD);
            else
                bllFerramenta.Atualizar(dtoFerramentaADD);
            Limpar();
            PopulaGrid();
            Habilitar(false);
        }

        private void dtGridProdutos_DataSourceChanged(object sender, EventArgs e)
        {
            if (dtGridProdutos.Rows.Count > 5)
                this.WindowState = FormWindowState.Maximized;

            if (dtGridProdutos.Rows.Count <= 0)
            {
                btnEditar.Enabled = false;
                btnExcluir.Enabled = false;
            }

        }

        private void btnExcluir_Click(object sender, EventArgs e)
        {
            if (new frmMessageBox().Show("Devido a importância do registro desta ferramenta ela não pode ser apagada.\nDeseja salvá-la como fora de linha?", "Aviso", MessageBoxButtons.YesNoCancel) == System.Windows.Forms.DialogResult.Yes)
            {
                dtGridProdutos_CellClick(null, null);
                bllFerramenta.Excluir(dtoFerramentaADD.FerramentaID);

                Limpar();
                Habilitar(false);
                PopulaGrid();
                dtGridProdutos_CellClick(null, null);
            }
        }

        private void dtGridProdutos_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (dtGridProdutos.CurrentCellAddress.X != -1 && dtGridProdutos.CurrentCellAddress.Y != -1)
            {
                dtoFerramentaADD.FerramentaID = Int32.Parse(dtGridProdutos.Rows[dtGridProdutos.CurrentCellAddress.Y].Cells["FerramentaID"].Value.ToString());
                txtCodigo.Text = dtoFerramentaADD.FerramentaID.ToString();
                txtDescricao.Text = dtGridProdutos.Rows[dtGridProdutos.CurrentCellAddress.Y].Cells["Descrição"].Value.ToString();

                dtoFerramentaADD.FornecedorID = Int32.Parse(dtGridProdutos.Rows[dtGridProdutos.CurrentCellAddress.Y].Cells["Fornecedor ID"].Value.ToString());
                txtValor.Text = dtGridProdutos.Rows[dtGridProdutos.CurrentCellAddress.Y].Cells["ValorCompra"].Value.ToString();
                txtMarca.Text = dtGridProdutos.Rows[dtGridProdutos.CurrentCellAddress.Y].Cells["Marca"].Value.ToString();
                DateTime dataaq = DateTime.Parse(dtGridProdutos.Rows[dtGridProdutos.CurrentCellAddress.Y].Cells["DataAquisicao"].Value.ToString());
                bool Descont = bool.Parse(dtGridProdutos.Rows[dtGridProdutos.CurrentCellAddress.Y].Cells["Descontinuando"].Value.ToString());

                dtpDataAquisicao.Value = dataaq;
                txtFornecedor.Text = bllFornecedor.BuscarRazaoPorFornecedorID(dtoFerramentaADD.FornecedorID).Razao;

                rbtnEmLinha.Checked = Descont;

              

                //rbttValorFixoNao.Checked = !Repetir;


                Habilitar(false);
                btnEditar.Enabled = true;
            }
        }
        private void btnBuscarFornecedor_Click(object sender, EventArgs e)
        {
            new frmSelecionarGenerico("Fornecedor").ShowDialog();

            if (!string.IsNullOrEmpty(BLLUtilitarios.fornecedorNome))
            {
                txtFornecedor.Text = BLLUtilitarios.fornecedorNome;
                dtoFerramentaADD.FornecedorID = BLLUtilitarios.fornecedorID;
            }
            BLLUtilitarios.fornecedorID = 0;
            BLLUtilitarios.fornecedorNome = null;

        }

        private void toolStripButtonSair_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void ckb_exibirForaLinha_CheckedChanged(object sender, EventArgs e)
        {
            PopulaGrid();
            Limpar();
            Habilitar(false);
        }

        private void btnEditar_Click(object sender, EventArgs e)
        {
            dtGridProdutos_CellClick(null, null);
            Habilitar(true);
            txtDescricao.Focus();
        }



        private void btn_pesquisar_Click(object sender, EventArgs e)
        {
            int cod = new int();

            Int32.TryParse(txtPesquisar.Text, out cod);
            PopulaGrid(txtPesquisar.Text + "%", cod);


        }

        private void btnCadastrarCategoria_Click(object sender, EventArgs e)
        {
            new frmCategoriaCadastro().ShowDialog();
        }

        private void btnCadastrarFornecedor_Click(object sender, EventArgs e)
        {
            new frmFornecedorCadastro().ShowDialog();
        }



        private void rbtnEmLinha_CheckedChanged(object sender, EventArgs e)
        {
            rbtnForaLinha.Checked = !rbtnEmLinha.Checked;

        }
    }
}
